﻿@model OJS.Web.Areas.Administration.ViewModels.Problem.DetailedProblemViewModel

@{
    ViewBag.Title = "Създаване на задача";
}

<h2>@ViewBag.Title към @Model.ContestName</h2>
<div id="create-form" class="container">
    @using (Html.BeginForm("Create", "Problems", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationMessage("Resources")

        @Html.HiddenFor(m => m.ContestName)
        @Html.HiddenFor(m => m.ContestId)

        <fieldset>
            <legend>Основна информация</legend>
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.Name)
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    @Html.TextBoxFor(m => m.Name, new { @class = "form-control pull-left full-editor" })
                </div>
                <div class="editor-field col-xs-4">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете заглавие на задачата" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.Name)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.MaximumPoints)
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    @(Html.Kendo()
                    .NumericTextBoxFor(m => m.MaximumPoints)
                    .Min(1)
                    .Format("#")
                    .Step(1)
                    .Spinners(false)
                    .HtmlAttributes(new { @class = "pull-left full-editor" }))
                </div>
                <div class="editor-field col-xs-4">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете максимален брой точки, които състезателят може да получи от задачата" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.MaximumPoints)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.TimeLimit) (в ms)
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    @(Html.Kendo()
                    .NumericTextBoxFor(m => m.TimeLimit)
                    .Min(1)
                    .Format("#")
                    .Step(1)
                    .Spinners(false)
                    .HtmlAttributes(new { @class = "pull-left full-editor" }))
                </div>
                <div class="editor-field col-xs-4">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете максимално време в милисекунди, които състезателят може да достигне с решението си върху задачата" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.TimeLimit)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.MemoryLimit) (в B)
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    @(Html.Kendo()
                    .NumericTextBoxFor(m => m.MemoryLimit)
                    .Format("#")
                    .Min(1)
                    .Step(1)
                    .Spinners(false)
                    .HtmlAttributes(new { @class = "pull-left full-editor" }))
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете максималнa памет в байтове, която състезателят може да достигне с решението си върху задачата" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.MemoryLimit)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.SourceCodeSizeLimit) (в B)
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    <input type="checkbox" id="enable-sclimit" />
                    <strong>Да</strong>
                    @(Html.Kendo()
                    .NumericTextBoxFor(m => m.SourceCodeSizeLimit)
                    .Format("#")
                    .Min(1)
                    .Step(1)
                    .Enable(false)
                    .Spinners(false)
                    .HtmlAttributes(new { @class = "pull-right full-editor", style = "width: 75%" }))
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете максимален размер на сорс код в байтове, която състезателят може да изпрати като решение на задачата" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.SourceCodeSizeLimit)
                </div>
            </div>
        </fieldset>
        <fieldset>
            <legend>Настройки</legend>
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.Checker)
                    </div>
                </div>
                <div class="col-xs-3">
                    @(Html.Kendo()
                    .DropDownListFor(m => m.Checker)
                    .BindTo(Model.AvailableCheckers)
                    .HtmlAttributes(new { @class = "pull-left full-kendo-editor" }))
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" id="checkers-tooltip"></span>
                    @Html.ValidationMessageFor(m => m.Checker)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.OrderBy)
                    </div>
                </div>
                <div class="col-xs-3">
                    @(Html.Kendo()
                    .NumericTextBoxFor(m => m.OrderBy)
                    .Format("#")
                    .Min(0)
                    .Step(1)
                    .Spinners(false)
                    .HtmlAttributes(new { @class = "pull-left full-editor" }))
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Въведете номер под ред на задачата в текущото състезание" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.OrderBy)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.ShowResults)
                    </div>
                </div>
                <div class="col-xs-3">
                    @Html.EditorFor(m => m.ShowResults)
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Изберете дали участниците ще могат да си виждат резултатите в реално време" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.ShowResults)
                </div>
            </div>
            <br />
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        @Html.LabelFor(m => m.ShowDetailedFeedback)
                    </div>
                </div>
                <div class="col-xs-3">
                    @Html.EditorFor(m => m.ShowDetailedFeedback)
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Изберете дали участниците ще могат да си виждат пълен feedback на решенията си, както го виждат администраторите" data-tooltip="true"></span>
                    @Html.ValidationMessageFor(m => m.ShowDetailedFeedback)
                </div>
            </div>
        </fieldset>
        <br />
        <fieldset>
            <legend>Ресурси</legend>
            <div class="row">
                <div class="container col-md-6">
                    <div class="pull-right">
                        <button class="btn btn-primary" id="add-resource">Добави</button>
                        <button class="btn btn-primary" id="remove-resource" disabled="disabled">Премахни</button>
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" title="Добавете или премахнете ресурс към задачата - условие, авторско решение или видео. Всеки ресурс има име, тип и файл/линк." data-tooltip="true"></span>
                </div>
            </div>

            <div class="row">
                <div class="container">
                    <div class="row" id="resources">
                    </div>
                </div>
            </div>
        </fieldset>
        <br />
        <fieldset>
            <legend>Тестове</legend>
            <div class="row">
                <div class="editor-label col-xs-3">
                    <div class="pull-right">
                        <strong>Тестове (.zip файл)</strong>
                    </div>
                </div>
                <div class="col-xs-3">
                    <div id="tests-file-button" class="btn btn-sm btn-primary pull-right">Избери файл</div>
                    <div class="hidden-file-upload">
                        <input type="file" name="testArchive" id="tests-upload-input" />
                    </div>
                </div>
                <div class="editor-field col-xs-3">
                    <span class="glyphicon glyphicon-question-sign text-primary" id="tests-tooltip"></span>
                </div>
            </div>
            <hr />
        </fieldset>
        <br />
        <div class="row">
            <div class="editor-label col-xs-5">
                <button type="submit" id="create-submit" class="btn btn-primary pull-right">Създай</button>
            </div>
            <div class="editor-label col-xs-3">
                <a href="/Administration/Problems/Contest/@Model.ContestId" class="btn btn-primary">Назад</a>
            </div>
        </div>
    }
</div>

@(Html.Kendo().Tooltip().For("#create-form").Filter("[data-tooltip='true']").Position(TooltipPosition.Bottom).Width(240))

<script type="text/x-kendo-template" id="checkers-template">
    <ul style="list-style-type: none">
        <li>
            <strong>Изберете тип проверка на сорс кода на състезателите. Базовите варианти са:</strong>
        </li>
        <li>
            <strong>Exact</strong> - системата проверява резултатите на състезателя с очаквания изход символ по символ;
        </li>
        <li>
            <strong>Trim</strong> - системата първо премахва празните интервали в началото и края на резултатите на състезателя и след това ги сравнява с очаквания изход символ по символ;
        </li>
        <li>
            <strong>Sort</strong> - системата първо сортира по линии резултатите на състезателя и очаквания изход и след това ги сравнява символ по символ;
        </li>
        <li>
            <strong>Case-insensitive</strong> - системата не отчита разлика между главна и малка буква като сравнява символ по символ;
        </li>
        <li>
            <strong>Precision N</strong> - само за задачи с резултати съдържащи числа с плаваща запетая на всеки нов ред - системата се съобразява само с първите N на брой цифри след плаващата запетая.
        </li>
    </ul>
</script>

<script type="text/x-kendo-template" id="tests-template">
    Изберете .zip файл с тестове за вход и изход към задачата.
    <br />
    Можете да изтеглите примерен файл с тестове
    <a href="/Content/Demos/DemoTests.zip">тук</a>.
</script>

@section scripts{
    <script src="~/Scripts/Administration/Problems/problems-create.js"></script>
    @Scripts.Render("~/bundles/jqueryval")
}




